﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MaquinaJMG.GUI.Contrato;
using System.Diagnostics;
using MaquinaJMG.GUI.Presentador;
using iTextSharp.text;
using iTextSharp.text.pdf;
using System.IO;

namespace MaquinaJMG.GUI.Vista
{
    public partial class Apuesta : Form
    {
       
       
        
        int id = 0;
        private PresentadorApuesta _presentadorBuscarParticipante;
        private String aaa;
        private int aaaa;
        private string cadena;
        private bool flagsClave;
      
       // private List<Entidad> misEventosCategorias = new List<Entidad>();
       
        public Apuesta(int a,eventosDisponibles anterior)
        {
            eventosDisponibles anteriorPantalla;
            anteriorPantalla = anterior;
            id = a;
            InitializeComponent();
            this.SetVisibleCore(true);
            _presentadorBuscarParticipante = new PresentadorApuesta(this);

            dataGridView1.AutoGenerateColumns = true;
            this.dataGridView1.AutoResizeColumns(
        DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);


            aaaa = _presentadorBuscarParticipante.obtenerCategoriaNOmbre3(id);

            aaa = _presentadorBuscarParticipante.obtenerCategoriaNOmbre2(id);
            if (aaaa == 0)
            {
                evento.Text = aaa;
                posiciones.Visible = false;
                nome.Visible = true;
                pos.Visible = false;
            }
            else
            {
                evento.Text = aaa;
                posiciones.Text = aaaa.ToString();
                posiciones.Visible = true;
                nome.Visible = true;
                pos.Visible = true;
            }
          

            List<Datos.Entidades.Evento> ok = new List<Datos.Entidades.Evento>();

            foreach (Datos.Entidades.Evento item in _presentadorBuscarParticipante.ConsultarParticipante2(id))
            {
                ok.Add(item);
            }
            dataGridView1.AutoGenerateColumns = true;
            dataGridView1.DataSource = ok;

            this.dataGridView1.Columns["Resultado"].Visible = true;
            this.dataGridView1.Columns["Monto"].Visible = true;
           
            this.dataGridView1.Columns["NombreCategoria"].Visible = false;
            
            this.dataGridView1.Columns["FK_Id_Acceso"].Visible = false;
            this.dataGridView1.Columns["Puntos"].Visible = false;
            this.dataGridView1.Columns["Posiciones"].Visible = false;
            this.dataGridView1.Columns["Id_Categoria"].Visible = false;
            this.dataGridView1.Columns["FK_Id_Participante"].Visible = false;
            this.dataGridView1.Columns["FK_Id_Evento"].Visible = false;
            this.dataGridView1.Columns["Fecha_Inicio"].Visible = false;
            this.dataGridView1.Columns["Fecha_Fin"].Visible = false;
            this.dataGridView1.Columns["Hora"].Visible = false;
            this.dataGridView1.Columns["Minuto"].Visible = false;
         
            this.dataGridView1.Columns["Id_Evento"].Visible = false;
            this.dataGridView1.Columns["NombreEvento"].Visible = false;
            this.dataGridView1.Columns["FK_Id_Categoria"].Visible = false;
            this.dataGridView1.Columns["Estatus"].Visible = false;
            this.dataGridView1.Columns["FK_Id_Maquina"].Visible = false;

        }


        public DataGridView participante
        {
            get
            {
                return dataGridView1;
            }

            set
            {
                dataGridView1 = value;
            }
        }

        public Label nome
        {
            get { return label1; }
        }

        public Label evento
        {
            get { return label2; }
        }

        public Label pos
        {
            get { return label3; }
        }

        public Label posiciones
        {
            get { return label4; }
        }



        private void Apuesta_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'casaDeApuestasMaquinaDataSet.Evento' table. You can move, or remove it, as needed.
            this.eventoTableAdapter.Fill(this.casaDeApuestasMaquinaDataSet.Evento);
            // TODO: This line of code loads data into the 'casaDeApuestasMaquinaDataSet.Acceso' table. You can move, or remove it, as needed.
            this.accesoTableAdapter.Fill(this.casaDeApuestasMaquinaDataSet.Acceso);
            // TODO: This line of code loads data into the 'casaDeApuestasMaquinaDataSet.HistorialParticipante' table. You can move, or remove it, as needed.
            this.historialParticipanteTableAdapter.Fill(this.casaDeApuestasMaquinaDataSet.HistorialParticipante);

        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void button1_Click_1(object sender, EventArgs e)
        {
            escribir("1");
        }

        private void panel1_Paint(object sender, PaintEventArgs e)
        {

        }

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void label2_Click(object sender, EventArgs e)
        {

        }

        private void label3_Click(object sender, EventArgs e)
        {

        }

        private void escribir(string letra)
        {
            if (flagsClave)
            {
                cadena = dataGridView1.Columns[1].ToString();
                if (letra == "clear")
                {
                    cadena = "";
                }
                else
                {
                    if (letra == "+")
                    {
                        int pos = cadena.Length;
                        if (pos > 0)
                            cadena = cadena.Remove(pos - 1, 1);
                    }
                    else
                    {
                        cadena = dataGridView1.Columns[1].ToString();
                        cadena = cadena + letra;
                    }
                }
                cadena=dataGridView1.Columns[1].ToString();
                //encriptar(cadena.Length);
            }
            else
            {
                cadena = dataGridView1.Columns[2].ToString(); 
                if (letra == "clear")
                {
                    cadena = "";
                }
                else
                {
                    if (letra == "+")
                    {
                        int pos = cadena.Length;
                        if (pos > 0)
                            cadena = cadena.Remove(pos - 1, 1);
                    }
                    else
                    {
                        cadena = dataGridView1.Columns[2].ToString();
                        cadena = cadena + letra;
                    }
                }
                cadena = dataGridView1.Columns[2].ToString();
            }
        }
        private void TxtLogin_TextChanged(object sender, EventArgs e)
        {
            flagsClave = false;
        }

        private void TxtClave_TextChanged(object sender, EventArgs e)
        {
            flagsClave = true;
        }
        private int montoExcede;
        private int tope;
        private void button11_Click(object sender, EventArgs e)
        {
            bool flag = true;
            int ide = _presentadorBuscarParticipante.obtenerCategoriaNOmbre(aaa);
            int idm = _presentadorBuscarParticipante.ConsultarMaquina();


            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                PresentadorApuesta apuesta = new PresentadorApuesta(this);
                int monto = Convert.ToInt32(row.Cells[1].Value);
                int val = Convert.ToInt32(row.Cells["TopeApuesta"].Value);
                tope = val;
                if (monto > val)
                {
                    flag = false;
                    montoExcede = monto;

                }
                
            }

            if(flag==true){
            
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                PresentadorApuesta apuesta = new PresentadorApuesta(this);
                int monto = Convert.ToInt32(row.Cells[1].Value);
                int resultado = Convert.ToInt32(row.Cells[2].Value);
                int id = Convert.ToInt32(row.Cells["Id_HistorialParticipante"].Value);
             //   int id3 = Convert.ToInt32(((TextBox)dataGridView1.Rows[row.Cells["Id_HistorialParticipante"]]);
                int val = Convert.ToInt32(row.Cells["TopeApuesta"].Value);
                    apuesta.InsertarAccesoApuesta(monto, resultado, ide, idm, id);

            }
            }
            else
                MessageBox.Show("Respetar el Tope de Apuesta se esta Excediendo apuesta " + montoExcede + " verificar el tope de apuesta de ese participante");

            if (flag == true)
            {
         
            //Código para exportar DataGridView a PDF usando iTextSharp
            //Evento clic del Botón Exportar
            try
            {

                Document doc = new Document(PageSize.A4.Rotate(), 100, 100
                                            , 100, 100);
                string filename = "DataGridViewTest2.pdf";
                FileStream file = new FileStream(filename,
                                                 FileMode.OpenOrCreate,
                                                 FileAccess.ReadWrite,
                                                 FileShare.ReadWrite);
                PdfWriter.GetInstance(doc, file);
                doc.Open();
               // iTextSharp.text.Image jpg =

  // iTextSharp.text.Image.GetInstance(@"C:\Aplicaciones1\MAQUINA\trunk\MaquinaJMG\MaquinaJMG\GUI\Imagenes\bb.jpg");
               // jpg.Alignment = iTextSharp.text.Image.RIGHT_ALIGN;

               // doc.Add(jpg); 
                Chunk chunk = new Chunk("                SENIAT                ",

             FontFactory.GetFont("ARIAL",

                         12,

                     iTextSharp.text.Font.UNDERLINE));
                Chunk chunk2 = new Chunk("                J-0609069                ",

            FontFactory.GetFont("ARIAL",

                        12,

                    iTextSharp.text.Font.NORMAL));
                Chunk chunk4 = new Chunk("                Av FCO DE MIRANDA EDF BANCO ORINOCO, PB LOCAL 1                ",

            FontFactory.GetFont("ARIAL",

                        12,

                    iTextSharp.text.Font.UNDERLINE));
                Chunk chunk5 = new Chunk("                COMPROBANTE OFICIAL              ",

             FontFactory.GetFont("ARIAL",

                         12,
                         
                     iTextSharp.text.Font.NORMAL));

                Chunk chunk9 = new Chunk("                AL PORTADOR              ",

             FontFactory.GetFont("ARIAL",

                         12,

                     iTextSharp.text.Font.NORMAL));
                Chunk chunk6 = new Chunk("                Comprobante #             0005634",

             FontFactory.GetFont("ARIAL",

                         12,

                     iTextSharp.text.Font.NORMAL));

                Chunk chunk7 = new Chunk("                Fecha   14/01/2012                 ",

             FontFactory.GetFont("ARIAL",

                         12,

                     iTextSharp.text.Font.NORMAL));

                Chunk chunk8 = new Chunk("   ",

             FontFactory.GetFont("ARIAL",

                         12,

                     iTextSharp.text.Font.NORMAL));
  


                doc.Add(new Paragraph(chunk));
                doc.Add(new Paragraph(chunk2));
                doc.Add(new Paragraph(chunk4));
                doc.Add(new Paragraph(chunk5));
                doc.Add(new Paragraph(chunk9));
                doc.Add(new Paragraph(chunk6));
                doc.Add(new Paragraph(chunk7));
                doc.Add(new Paragraph(chunk8));



                GenerarDocumento(doc);
                doc.Close();


                Process.Start(filename);

            }


            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

        }
        }

        //Función que genera el documento Pdf
        public void GenerarDocumento(Document document)
        {

            //se crea un objeto PdfTable con el numero de columnas del 
            //dataGridView
            PdfPTable datatable = new PdfPTable(dataGridView1.ColumnCount);
            //asignamos algunas propiedades para el diseño del pdf
            datatable.DefaultCell.Padding = 3;
            float[] headerwidths = GetTamañoColumnas(dataGridView1);
            datatable.SetWidths(headerwidths);
            datatable.WidthPercentage = 100;
            datatable.DefaultCell.BorderWidth = 2;
            datatable.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;

            this.dataGridView1.Columns["Resultado"].Visible = true;
            this.dataGridView1.Columns["Monto"].Visible = true;
            this.dataGridView1.Columns["NombreParticipante"].Visible = true;
            this.dataGridView1.Columns["Id_HistorialPArticipante"].Visible = true;
            this.dataGridView1.Columns["TopeApuesta"].Visible = true;
            this.dataGridView1.Columns["RelacionPago"].Visible = true;

            this.dataGridView1.Columns["NombreCategoria"].Visible = false;

            this.dataGridView1.Columns["FK_Id_Acceso"].Visible = false;
            this.dataGridView1.Columns["Puntos"].Visible = false;
            this.dataGridView1.Columns["Posiciones"].Visible = false;
            this.dataGridView1.Columns["Id_Categoria"].Visible = false;
            this.dataGridView1.Columns["FK_Id_Participante"].Visible = false;
            this.dataGridView1.Columns["FK_Id_Evento"].Visible = false;
            this.dataGridView1.Columns["Fecha_Inicio"].Visible = false;
            this.dataGridView1.Columns["Fecha_Fin"].Visible = false;
            this.dataGridView1.Columns["Hora"].Visible = false;
            this.dataGridView1.Columns["Minuto"].Visible = false;

            this.dataGridView1.Columns["Id_Evento"].Visible = false;
            this.dataGridView1.Columns["NombreEvento"].Visible = false;
            this.dataGridView1.Columns["FK_Id_Categoria"].Visible = false;
            this.dataGridView1.Columns["Estatus"].Visible = false;
            this.dataGridView1.Columns["FK_Id_Maquina"].Visible = false;



            //SE GENERA EL ENCABEZADO DE LA TABLA EN EL PDF
            //for (int i = 0; i < dataGridView1.ColumnCount; i++)
            //{

            datatable.AddCell(dataGridView1.Columns["Monto"].HeaderText);
            datatable.AddCell(dataGridView1.Columns["Resultado"].HeaderText);
            datatable.AddCell(dataGridView1.Columns["NombreParticipante"].HeaderText);
            datatable.AddCell(dataGridView1.Columns["Id_HistorialParticipante"].HeaderText);
            datatable.AddCell(dataGridView1.Columns["TopeApuesta"].HeaderText);
            datatable.AddCell(dataGridView1.Columns["RelacionPago"].HeaderText);
            datatable.CompleteRow();
            //}

            //  datatable.HeaderRows = 1;
            // datatable.DefaultCell.BorderWidth = 1;

            //SE GENERA EL CUERPO DEL PDF
            for (int i = 0; i < dataGridView1.RowCount; i++)
            {
                //for (int j = 0; j < dataGridView1.ColumnCount; j++)
                //{
                //Console.WriteLine(dataGridView1[j, i].Value);
                //if (dataGridView1[j, i].Value.ToString()!="")
                datatable.AddCell(dataGridView1["Monto", i].Value.ToString());
                datatable.AddCell(dataGridView1["Resultado", i].Value.ToString());
                datatable.AddCell(dataGridView1["NombreParticipante", i].Value.ToString());
                datatable.AddCell(dataGridView1["Id_HistorialParticipante", i].Value.ToString());
                datatable.AddCell(dataGridView1["TopeApuesta", i].Value.ToString());
                datatable.AddCell(dataGridView1["RelacionPago", i].Value.ToString());
                


                //  datatable.AddCell(dataGridView1[3, i].Value.ToString());
                //}
                datatable.CompleteRow();

            }

            //SE AGREGAR LA PDFPTABLE AL DOCUMENTO
            document.Add(datatable);
        }

        //Función que obtiene los tamaños de las columnas del grid
        public float[] GetTamañoColumnas(DataGridView dg)
        {
            float[] values = new float[dg.ColumnCount];
            for (int i = 0; i < 6; i++)
            {
                values[i] = (float)dg.Columns[i].Width;
            }
            return values;

        }

        private void button12_Click(object sender, EventArgs e)
        {
            Application.Restart();
            this.Dispose();
           // anteriorPantalla.Visible(true);

        }
    
private void button2_Click(object sender, EventArgs e)
{
    escribir("2");
}

private void button3_Click(object sender, EventArgs e)
{
    escribir("3");
}

private void button4_Click(object sender, EventArgs e)
{
    escribir("4");
}

private void button5_Click(object sender, EventArgs e)
{
    escribir("5");
}

private void button6_Click(object sender, EventArgs e)
{
    escribir("6");
}

private void button7_Click(object sender, EventArgs e)
{
    escribir("7");
}

private void button8_Click(object sender, EventArgs e)
{
    escribir("8");
}

private void button9_Click(object sender, EventArgs e)
{
    escribir("9");
}

private void button10_Click(object sender, EventArgs e)
{
    escribir("0");
}
    }
}
